home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Shellapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-08  |  16.4 KB  |  517 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * shellapi.h -  SHELL.DLL functions, types, and definitions                   *
  4. *                                                                             *
  5. * Copyright (c) 1992-1996, Microsoft Corp.  All rights reserved               *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. #ifndef _INC_SHELLAPI
  10. #define _INC_SHELLAPI
  11.  
  12.  
  13.  
  14. //
  15. // Define API decoration for direct importing of DLL references.
  16. //
  17. #ifndef WINSHELLAPI
  18. #if !defined(_SHELL32_)
  19. #define WINSHELLAPI DECLSPEC_IMPORT
  20. #else
  21. #define WINSHELLAPI
  22. #endif
  23. #endif // WINSHELLAPI
  24.  
  25. #include <pshpack1.h>
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {            /* Assume C declarations for C++ */
  29. #endif  /* __cplusplus */
  30.  
  31.  
  32.  
  33. DECLARE_HANDLE(HDROP);
  34.  
  35. WINSHELLAPI UINT APIENTRY DragQueryFileA(HDROP,UINT,LPSTR,UINT);
  36. WINSHELLAPI UINT APIENTRY DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
  37. #ifdef UNICODE
  38. #define DragQueryFile  DragQueryFileW
  39. #else
  40. #define DragQueryFile  DragQueryFileA
  41. #endif // !UNICODE
  42. WINSHELLAPI BOOL APIENTRY DragQueryPoint(HDROP,LPPOINT);
  43. WINSHELLAPI VOID APIENTRY DragFinish(HDROP);
  44. WINSHELLAPI VOID APIENTRY DragAcceptFiles(HWND,BOOL);
  45.  
  46. WINSHELLAPI HINSTANCE APIENTRY ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
  47. WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
  48. #ifdef UNICODE
  49. #define ShellExecute  ShellExecuteW
  50. #else
  51. #define ShellExecute  ShellExecuteA
  52. #endif // !UNICODE
  53. WINSHELLAPI HINSTANCE APIENTRY FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
  54. WINSHELLAPI HINSTANCE APIENTRY FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
  55. #ifdef UNICODE
  56. #define FindExecutable  FindExecutableW
  57. #else
  58. #define FindExecutable  FindExecutableA
  59. #endif // !UNICODE
  60. WINSHELLAPI LPWSTR *  APIENTRY CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs);
  61.  
  62. WINSHELLAPI INT       APIENTRY ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
  63. WINSHELLAPI INT       APIENTRY ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
  64. #ifdef UNICODE
  65. #define ShellAbout  ShellAboutW
  66. #else
  67. #define ShellAbout  ShellAboutA
  68. #endif // !UNICODE
  69. WINSHELLAPI HICON     APIENTRY ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon);
  70. WINSHELLAPI HICON     APIENTRY ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon);
  71. #ifdef UNICODE
  72. #define ExtractAssociatedIcon  ExtractAssociatedIconW
  73. #else
  74. #define ExtractAssociatedIcon  ExtractAssociatedIconA
  75. #endif // !UNICODE
  76.  
  77. WINSHELLAPI HICON     APIENTRY ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex);
  78. WINSHELLAPI HICON     APIENTRY ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex);
  79. #ifdef UNICODE
  80. #define ExtractIcon  ExtractIconW
  81. #else
  82. #define ExtractIcon  ExtractIconA
  83. #endif // !UNICODE
  84.  
  85. #if(WINVER >= 0x0400)
  86.  
  87. ////
  88. //// AppBar stuff
  89. ////
  90. #define ABM_NEW           0x00000000
  91. #define ABM_REMOVE        0x00000001
  92. #define ABM_QUERYPOS      0x00000002
  93. #define ABM_SETPOS        0x00000003
  94. #define ABM_GETSTATE      0x00000004
  95. #define ABM_GETTASKBARPOS 0x00000005
  96. #define ABM_ACTIVATE      0x00000006  // lParam == TRUE/FALSE means activate/deactivate
  97. #define ABM_GETAUTOHIDEBAR 0x00000007
  98. #define ABM_SETAUTOHIDEBAR 0x00000008  // this can fail at any time.  MUST check the result
  99.                                         // lParam = TRUE/FALSE  Set/Unset
  100.                                         // uEdge = what edge
  101. #define ABM_WINDOWPOSCHANGED 0x0000009
  102.  
  103.  
  104. // these are put in the wparam of callback messages
  105. #define ABN_STATECHANGE    0x0000000
  106. #define ABN_POSCHANGED     0x0000001
  107. #define ABN_FULLSCREENAPP  0x0000002
  108. #define ABN_WINDOWARRANGE  0x0000003 // lParam == TRUE means hide
  109.  
  110. // flags for get state
  111. #define ABS_AUTOHIDE    0x0000001
  112. #define ABS_ALWAYSONTOP 0x0000002
  113.  
  114. #define ABE_LEFT        0
  115. #define ABE_TOP         1
  116. #define ABE_RIGHT       2
  117. #define ABE_BOTTOM      3
  118.  
  119. typedef struct _AppBarData
  120. {
  121.     DWORD cbSize;
  122.     HWND hWnd;
  123.     UINT uCallbackMessage;
  124.     UINT uEdge;
  125.     RECT rc;
  126.     LPARAM lParam; // message specific
  127. } APPBARDATA, *PAPPBARDATA;
  128.  
  129. WINSHELLAPI UINT APIENTRY SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
  130.  
  131. ////
  132. ////  EndAppBar
  133. ////
  134.  
  135.  
  136.  
  137.  
  138. #define EIRESID(x) (-1 * (int)(x))
  139. WINSHELLAPI UINT WINAPI ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON FAR *phiconLarge, HICON FAR *phiconSmall, UINT nIcons);
  140. WINSHELLAPI UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON FAR *phiconLarge, HICON FAR *phiconSmall, UINT nIcons);
  141. #ifdef UNICODE
  142. #define ExtractIconEx  ExtractIconExW
  143. #else
  144. #define ExtractIconEx  ExtractIconExA
  145. #endif // !UNICODE
  146.  
  147.  
  148.  
  149. ////
  150. //// Shell File Operations
  151. ////
  152.  
  153. #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h
  154.  
  155. #define FO_MOVE           0x0001
  156. #define FO_COPY           0x0002
  157. #define FO_DELETE         0x0003
  158. #define FO_RENAME         0x0004
  159.  
  160. #define FOF_MULTIDESTFILES         0x0001
  161. #define FOF_CONFIRMMOUSE           0x0002
  162. #define FOF_SILENT                 0x0004  // don't create progress/report
  163. #define FOF_RENAMEONCOLLISION      0x0008
  164. #define FOF_NOCONFIRMATION         0x0010  // Don't prompt the user.
  165. #define FOF_WANTMAPPINGHANDLE      0x0020  // Fill in SHFILEOPSTRUCT.hNameMappings
  166.                                       // Must be freed using SHFreeNameMappings
  167. #define FOF_ALLOWUNDO              0x0040
  168. #define FOF_FILESONLY              0x0080  // on *.*, do only files
  169. #define FOF_SIMPLEPROGRESS         0x0100  // means don't show names of files
  170. #define FOF_NOCONFIRMMKDIR         0x0200  // don't confirm making any needed dirs
  171. #define FOF_NOERRORUI              0x0400  // don't put up error UI
  172. typedef WORD FILEOP_FLAGS;
  173.  
  174. #define PO_DELETE       0x0013  // printer is being deleted
  175. #define PO_RENAME       0x0014  // printer is being renamed
  176. #define PO_PORTCHANGE   0x0020  // port this printer connected to is being changed
  177.                                 // if this id is set, the strings received by
  178.                                 // the copyhook are a doubly-null terminated
  179.                                 // list of strings.  The first is the printer
  180.                                 // name and the second is the printer port.
  181. #define PO_REN_PORT     0x0034  // PO_RENAME and PO_PORTCHANGE at same time.
  182.  
  183. // no POF_ flags currently defined
  184.  
  185. typedef WORD PRINTEROP_FLAGS;
  186.  
  187. #endif // FO_MOVE
  188.  
  189. // implicit parameters are:
  190. //      if pFrom or pTo are unqualified names the current directories are
  191. //      taken from the global current drive/directory settings managed
  192. //      by Get/SetCurrentDrive/Directory
  193. //
  194. //      the global confirmation settings
  195.  
  196. typedef struct _SHFILEOPSTRUCTA
  197. {
  198.         HWND            hwnd;
  199.         UINT            wFunc;
  200.         LPCSTR          pFrom;
  201.         LPCSTR          pTo;
  202.         FILEOP_FLAGS    fFlags;
  203.         BOOL            fAnyOperationsAborted;
  204.         LPVOID          hNameMappings;
  205.         LPCSTR           lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
  206. } SHFILEOPSTRUCTA, FAR *LPSHFILEOPSTRUCTA;
  207. typedef struct _SHFILEOPSTRUCTW
  208. {
  209.         HWND            hwnd;
  210.         UINT            wFunc;
  211.         LPCWSTR         pFrom;
  212.         LPCWSTR         pTo;
  213.         FILEOP_FLAGS    fFlags;
  214.         BOOL            fAnyOperationsAborted;
  215.         LPVOID          hNameMappings;
  216.         LPCWSTR          lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
  217. } SHFILEOPSTRUCTW, FAR *LPSHFILEOPSTRUCTW;
  218. #ifdef UNICODE
  219. typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT;
  220. typedef LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT;
  221. #else
  222. typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT;
  223. typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT;
  224. #endif // UNICODE
  225.  
  226. WINSHELLAPI int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);
  227. WINSHELLAPI int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp);
  228. #ifdef UNICODE
  229. #define SHFileOperation  SHFileOperationW
  230. #else
  231. #define SHFileOperation  SHFileOperationA
  232. #endif // !UNICODE
  233.  
  234. WINSHELLAPI void WINAPI SHFreeNameMappings(HANDLE hNameMappings);
  235.  
  236. typedef struct _SHNAMEMAPPINGA
  237. {
  238.     LPSTR   pszOldPath;
  239.     LPSTR   pszNewPath;
  240.     int   cchOldPath;
  241.     int   cchNewPath;
  242. } SHNAMEMAPPINGA, FAR *LPSHNAMEMAPPINGA;
  243. typedef struct _SHNAMEMAPPINGW
  244. {
  245.     LPWSTR  pszOldPath;
  246.     LPWSTR  pszNewPath;
  247.     int   cchOldPath;
  248.     int   cchNewPath;
  249. } SHNAMEMAPPINGW, FAR *LPSHNAMEMAPPINGW;
  250. #ifdef UNICODE
  251. typedef SHNAMEMAPPINGW SHNAMEMAPPING;
  252. typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
  253. #else
  254. typedef SHNAMEMAPPINGA SHNAMEMAPPING;
  255. typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
  256. #endif // UNICODE
  257.  
  258.  
  259. ////
  260. //// End Shell File Operations
  261. ////
  262.  
  263. ////
  264. ////  Begin ShellExecuteEx and family
  265. ////
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275. /* ShellExecute() and ShellExecuteEx() error codes */
  276.  
  277. /* regular WinExec() codes */
  278. #define SE_ERR_FNF              2       // file not found
  279. #define SE_ERR_PNF              3       // path not found
  280. #define SE_ERR_ACCESSDENIED     5       // access denied
  281. #define SE_ERR_OOM              8       // out of memory
  282. #define SE_ERR_DLLNOTFOUND              32
  283.  
  284. #endif /* WINVER >= 0x0400 */
  285.  
  286. /* error values for ShellExecute() beyond the regular WinExec() codes */
  287. #define SE_ERR_SHARE                    26
  288. #define SE_ERR_ASSOCINCOMPLETE          27
  289. #define SE_ERR_DDETIMEOUT               28
  290. #define SE_ERR_DDEFAIL                  29
  291. #define SE_ERR_DDEBUSY                  30
  292. #define SE_ERR_NOASSOC                  31
  293.  
  294. #if(WINVER >= 0x0400)
  295.  
  296.  
  297.  
  298. // Note CLASSKEY overrides CLASSNAME
  299. #define SEE_MASK_CLASSNAME      0x00000001
  300. #define SEE_MASK_CLASSKEY       0x00000003
  301. // Note INVOKEIDLIST overrides IDLIST
  302. #define SEE_MASK_IDLIST         0x00000004
  303. #define SEE_MASK_INVOKEIDLIST   0x0000000c
  304. #define SEE_MASK_ICON           0x00000010
  305. #define SEE_MASK_HOTKEY         0x00000020
  306. #define SEE_MASK_NOCLOSEPROCESS 0x00000040
  307. #define SEE_MASK_CONNECTNETDRV  0x00000080
  308. #define SEE_MASK_FLAG_DDEWAIT   0x00000100
  309. #define SEE_MASK_DOENVSUBST     0x00000200
  310. #define SEE_MASK_FLAG_NO_UI     0x00000400
  311. #define SEE_MASK_UNICODE        0x00004000
  312. #define SEE_MASK_NO_CONSOLE     0x00008000
  313. #define SEE_MASK_ASYNCOK        0x00100000
  314.  
  315. typedef struct _SHELLEXECUTEINFOA
  316. {
  317.         DWORD cbSize;
  318.         ULONG fMask;
  319.         HWND hwnd;
  320.         LPCSTR   lpVerb;
  321.         LPCSTR   lpFile;
  322.         LPCSTR   lpParameters;
  323.         LPCSTR   lpDirectory;
  324.         int nShow;
  325.         HINSTANCE hInstApp;
  326.         // Optional fields
  327.         LPVOID lpIDList;
  328.         LPCSTR   lpClass;
  329.         HKEY hkeyClass;
  330.         DWORD dwHotKey;
  331.         HANDLE hIcon;
  332.         HANDLE hProcess;
  333. } SHELLEXECUTEINFOA, FAR *LPSHELLEXECUTEINFOA;
  334. typedef struct _SHELLEXECUTEINFOW
  335. {
  336.         DWORD cbSize;
  337.         ULONG fMask;
  338.         HWND hwnd;
  339.         LPCWSTR  lpVerb;
  340.         LPCWSTR  lpFile;
  341.         LPCWSTR  lpParameters;
  342.         LPCWSTR  lpDirectory;
  343.         int nShow;
  344.         HINSTANCE hInstApp;
  345.         // Optional fields
  346.         LPVOID lpIDList;
  347.         LPCWSTR  lpClass;
  348.         HKEY hkeyClass;
  349.         DWORD dwHotKey;
  350.         HANDLE hIcon;
  351.         HANDLE hProcess;
  352. } SHELLEXECUTEINFOW, FAR *LPSHELLEXECUTEINFOW;
  353. #ifdef UNICODE
  354. typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO;
  355. typedef LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO;
  356. #else
  357. typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO;
  358. typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO;
  359. #endif // UNICODE
  360.  
  361. WINSHELLAPI BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
  362. WINSHELLAPI BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
  363. #ifdef UNICODE
  364. #define ShellExecuteEx  ShellExecuteExW
  365. #else
  366. #define ShellExecuteEx  ShellExecuteExA
  367. #endif // !UNICODE
  368.  
  369. ////
  370. ////  End ShellExecuteEx and family
  371. ////
  372.  
  373.  
  374. ////
  375. //// Tray notification definitions
  376. ////
  377.  
  378. typedef struct _NOTIFYICONDATAA {
  379.         DWORD cbSize;
  380.         HWND hWnd;
  381.         UINT uID;
  382.         UINT uFlags;
  383.         UINT uCallbackMessage;
  384.         HICON hIcon;
  385.         CHAR   szTip[64];
  386. } NOTIFYICONDATAA, *PNOTIFYICONDATAA;
  387. typedef struct _NOTIFYICONDATAW {
  388.         DWORD cbSize;
  389.         HWND hWnd;
  390.         UINT uID;
  391.         UINT uFlags;
  392.         UINT uCallbackMessage;
  393.         HICON hIcon;
  394.         WCHAR  szTip[64];
  395. } NOTIFYICONDATAW, *PNOTIFYICONDATAW;
  396. #ifdef UNICODE
  397. typedef NOTIFYICONDATAW NOTIFYICONDATA;
  398. typedef PNOTIFYICONDATAW PNOTIFYICONDATA;
  399. #else
  400. typedef NOTIFYICONDATAA NOTIFYICONDATA;
  401. typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
  402. #endif // UNICODE
  403.  
  404.  
  405. #define NIM_ADD         0x00000000
  406. #define NIM_MODIFY      0x00000001
  407. #define NIM_DELETE      0x00000002
  408.  
  409. #define NIF_MESSAGE     0x00000001
  410. #define NIF_ICON        0x00000002
  411. #define NIF_TIP         0x00000004
  412.  
  413. WINSHELLAPI BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData);
  414. WINSHELLAPI BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData);
  415. #ifdef UNICODE
  416. #define Shell_NotifyIcon  Shell_NotifyIconW
  417. #else
  418. #define Shell_NotifyIcon  Shell_NotifyIconA
  419. #endif // !UNICODE
  420.  
  421. ////
  422. //// End Tray Notification Icons
  423. ////
  424.  
  425.  
  426.  
  427. ////
  428. //// Begin SHGetFileInfo
  429. ////
  430.  
  431. /*
  432.  * The SHGetFileInfo API provides an easy way to get attributes
  433.  * for a file given a pathname.
  434.  *
  435.  *   PARAMETERS
  436.  *
  437.  *     pszPath              file name to get info about
  438.  *     dwFileAttributes     file attribs, only used with SHGFI_USEFILEATTRIBUTES
  439.  *     psfi                 place to return file info
  440.  *     cbFileInfo           size of structure
  441.  *     uFlags               flags
  442.  *
  443.  *   RETURN
  444.  *     TRUE if things worked
  445.  */
  446.  
  447. typedef struct _SHFILEINFOA
  448. {
  449.         HICON       hIcon;                      // out: icon
  450.         int         iIcon;                      // out: icon index
  451.         DWORD       dwAttributes;               // out: SFGAO_ flags
  452.         CHAR        szDisplayName[MAX_PATH];    // out: display name (or path)
  453.         CHAR        szTypeName[80];             // out: type name
  454. } SHFILEINFOA;
  455. typedef struct _SHFILEINFOW
  456. {
  457.         HICON       hIcon;                      // out: icon
  458.         int         iIcon;                      // out: icon index
  459.         DWORD       dwAttributes;               // out: SFGAO_ flags
  460.         WCHAR       szDisplayName[MAX_PATH];    // out: display name (or path)
  461.         WCHAR       szTypeName[80];             // out: type name
  462. } SHFILEINFOW;
  463. #ifdef UNICODE
  464. typedef SHFILEINFOW SHFILEINFO;
  465. #else
  466. typedef SHFILEINFOA SHFILEINFO;
  467. #endif // UNICODE
  468.  
  469. #define SHGFI_ICON              0x000000100     // get icon
  470. #define SHGFI_DISPLAYNAME       0x000000200     // get display name
  471. #define SHGFI_TYPENAME          0x000000400     // get type name
  472. #define SHGFI_ATTRIBUTES        0x000000800     // get attributes
  473. #define SHGFI_ICONLOCATION      0x000001000     // get icon location
  474. #define SHGFI_EXETYPE           0x000002000     // return exe type
  475. #define SHGFI_SYSICONINDEX      0x000004000     // get system icon index
  476. #define SHGFI_LINKOVERLAY       0x000008000     // put a link overlay on icon
  477. #define SHGFI_SELECTED          0x000010000     // show icon in selected state
  478. #define SHGFI_LARGEICON         0x000000000     // get large icon
  479. #define SHGFI_SMALLICON         0x000000001     // get small icon
  480. #define SHGFI_OPENICON          0x000000002     // get open icon
  481. #define SHGFI_SHELLICONSIZE     0x000000004     // get shell size icon
  482. #define SHGFI_PIDL              0x000000008     // pszPath is a pidl
  483. #define SHGFI_USEFILEATTRIBUTES 0x000000010     // use passed dwFileAttribute
  484.  
  485. WINSHELLAPI DWORD WINAPI SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA FAR *psfi, UINT cbFileInfo, UINT uFlags);
  486. WINSHELLAPI DWORD WINAPI SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW FAR *psfi, UINT cbFileInfo, UINT uFlags);
  487. #ifdef UNICODE
  488. #define SHGetFileInfo  SHGetFileInfoW
  489. #else
  490. #define SHGetFileInfo  SHGetFileInfoA
  491. #endif // !UNICODE
  492.  
  493.  
  494. #define SHGNLI_PIDL             0x000000001     // pszLinkTo is a pidl
  495. #define SHGNLI_PREFIXNAME       0x000000002     // Make name "Shortcut to xxx"
  496. #define SHGNLI_NOUNIQUE         0x000000004     // don't do the unique name generation
  497.  
  498.  
  499. ////
  500. //// End SHGetFileInfo
  501. ////
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508. #endif /* WINVER >= 0x0400 */
  509.  
  510. #ifdef __cplusplus
  511. }
  512. #endif  /* __cplusplus */
  513.  
  514. #include <poppack.h>
  515.  
  516. #endif  /* _INC_SHELLAPI */
  517.